#include "clientmanger.h"
#include "Loop.h"
#include "business/video.h"
#include "uv.h"
#include <bitset>
#include <cmath>
#include <log.h>
#include <memory>
#include <sstream>
#include <string>

bool SessionManger::Deliver(int sid, char msg_type, string data)
{
    return true;
}

SessionManger::SessionManger()
{
}

SessionManger::~SessionManger()
{
    mVecse.clear();
}

SessionManger& SessionManger::GetInstance()
{
    static SessionManger sm;
    return sm;
}

int SessionManger::CreatSessionID()
{
    int sessionid;
    // 每次选出最小的id
    static int epch = 0;
    static int lastId = 0;

    if (epch >= pow(2, 15)) {
        ALOGE("ID run out of");
        return -1;
    }
    if (lastId >= pow(2, 16)) {
        epch++;
        lastId = 0;
    }

    // 类雪花算法实现，全局唯一自增ID生成，用一个int(32位)存储id，去掉最高位，可以生成pow(2,31)个唯一id
    // 后16位为序号位，17到31位为轮次位(15位)
    sessionid = epch << 16 | lastId++;
    return sessionid;
}

int SessionManger::AddSession(std::shared_ptr<Client> s)
{
    mVecse.push_back(s);
    return true;
}
